/**
 * 添加的公共方法
 * @param model
 * @param params
 * @param ctx
 * @returns {Promise<T>}
 */
const add = (model, params, ctx) => (
  model
    .create(params)
    .then(rel => {
      if (rel) {
        ctx.body = {
          code: 200,
          msg: '添加成功',
          data: rel
        }
      } else {
        ctx.body = {
          code: 300,
          msg: '添加失败'
        }
      }
    })
    .catch(err => {
      ctx.body = {
        code: 400,
        msg: '添加时出现异常'
      }
      console.error(err)
    })
)
/**
 * 修改的公共方法
 * @param model
 * @param where
 * @param params
 * @param ctx
 * @returns {Promise<T>}
 */
const update = (model, where, params, ctx) => (
  model.updateOne(where, params)
    .then(rel => {
      ctx.body = {
        result: rel
      }
    })
    .catch(err => {
      ctx.body = {
        code: 400,
        msg: '修改时出现异常'
      }
      console.error(err)
    })
)
/**
 * 删除的公共方法
 * @param model
 * @param params
 * @param ctx
 * @returns {Promise<T>}
 */
const del = (model, params, ctx) => (
  model.findOneAndDelete(params)
    .then(rel => {
      ctx.body = {
        result: rel
      }
    })
    .catch(err => {
      ctx.body = {
        code: 400,
        msg: '删除时出现异常'
      }
      console.error(err)
    })
)
/**
 * 查询所有数据的公共方法
 * @param model
 * @param where
 * @param ctx
 * @returns {Promise<T>}
 */
const find = (model, where, ctx) => (
  model.find(where)
    .then(rel => {
      ctx.body = {
        result: rel
      }
    })
    .catch(err => {
      ctx.body = {
        code: 400,
        msg: '查询时出现异常'
      }
      console.error(err)
    })
)
/**
 * 查询单条数据的公共方法
 * @param model
 * @param params
 * @param ctx
 * @returns {Promise<T>}
 */
const findOne = (model, params, ctx) => (
  model.findOne(params)
    .then(rel => {
      ctx.body = {
        result: rel
      }
    })
    .catch(err => {
      ctx.body = {
        code: 400,
        msg: '查询时出现异常'
      }
      console.error(err)
    })
)
module.exports = {
  add,
  update,
  del,
  find,
  findOne
}
